//package com.xxl.job.executor.service.jobhandler.backupver;
//
//import com.xxl.job.core.context.XxlJobHelper;
//import com.xxl.job.core.handler.annotation.XxlJob;
//import org.springframework.stereotype.Component;
//
//import java.io.BufferedReader;
//import java.io.IOException;
//import java.io.InputStreamReader;
//import java.nio.file.Paths;
//
//
//@Component
//public class WindowsExeJob_v1 {
//    /**
//     * windows exe 任务/cmd 任务
//     */
//    @XxlJob("exe")
//    public void WinExeJobHandler() {
//        String exePath = XxlJobHelper.getJobParam();
//        // 创建进程
//        ProcessBuilder pb = new ProcessBuilder(exePath);
//        if (exePath != null) {
//            // 设置工作目录
//            pb.directory(Paths.get(exePath).getParent().toFile());
//        }
//        Process process = null;
//        try {
//            process = pb.start();
//            // 异步读取输出流（避免阻塞）
//            Process processInput = process;
//            // 创建一个线程来读取输出流
//            Thread stdInputThread = new Thread(() -> {
//                try (BufferedReader reader = new BufferedReader(
//                        new InputStreamReader(processInput.getInputStream(), "GBK"))) {
//                    String line;
//                    while ((line = reader.readLine()) != null) {
//                        XxlJobHelper.log(line);
//                    }
//                } catch (IOException e) {
//                    XxlJobHelper.log("读取标准输出失败: " + e.getMessage());
//                }
//            });
//            // 创建一个线程来读取错误流
//            Process processError = process;
//            Thread stdErrorThread = new Thread(() -> {
//                try (BufferedReader reader = new BufferedReader(
//                        new InputStreamReader(processError.getErrorStream(), "GBK"))) {
//                    String line;
//                    while ((line = reader.readLine()) != null) {
//                        XxlJobHelper.log("错误: " + line);
//                    }
//                } catch (IOException e) {
//                    XxlJobHelper.log("读取错误输出失败: " + e.getMessage());
//                }
//            });
//            // 启动线程
//            stdInputThread.start();
//            stdErrorThread.start();
//            // 等待命令执行完成
//            int exitCode = process.waitFor();
//            stdInputThread.join();
//            stdErrorThread.join();
//            // 添加命令返回码
//            XxlJobHelper.log("命令返回码: " + exitCode);
//        } catch (IOException | InterruptedException e) {
//            XxlJobHelper.log("执行命令失败: " + e.getMessage());
//        } finally {
//            if (process != null) {
//                // 确保进程被销毁
//                process.destroy();
//            }
//        }
//    }
//}
